﻿using System.Configuration;

public class WebConstants
{
    /// <summary>
    /// Gibt die Länge des Passwortes an die eingegeben bzw, gesetzt werden muss.
    /// </summary>
    public const int PasswordLength = 8;

    /// <summary>
    /// Die Anzahl der Datensätze die Pro Seite angezeigt werden sollen beim Paging
    /// </summary>
    public const int PageSizePaging = 500;

    /// <summary>
    /// Das Virtuelle Dir in dem die Webseite liegt z.b. http://localhost/WebPilot/ ist es dann "WebPilot"
    /// </summary>
    public static string UrlVirtualDir = ConfigurationManager.AppSettings["VirtualDir"];

    /// <summary>
    /// Der Empfänger für die Kontaktformular Emails, an diese Mailadresse werden alle anfragen gesendet.
    /// </summary>
    public static string ContactformularReceiver = ConfigurationManager.AppSettings["KontaktformularEmpfaenger"];

    /// <summary>
    /// Der öffentliche Captcha Key, wird verwendet für den Captcha Helper
    /// </summary>
    public static string PublicCaptchaKey = ConfigurationManager.AppSettings["PublicCaptchaKey"];

    /// <summary>
    /// Der Private Catpcha Key, wird verwendet für den Captcha Helper
    /// </summary>
    public static string PrivateCaptchaKey = ConfigurationManager.AppSettings["PrivateCaptchaKey"];

    /// <summary>
    /// Gibt an ob in der Web.Config die ClientValidationn eingeschalten ist.
    /// </summary>
    public static bool ClientValidationEnabled = bool.Parse(ConfigurationManager.AppSettings["ClientValidationEnabled"]);

    /// <summary>
    /// Gibt an ob in der Web.Config UnobtrusiveJavaScript eingeschalten ist.
    /// </summary>
    public static bool UnobtrusiveJavaScriptEnabled = bool.Parse(ConfigurationManager.AppSettings["UnobtrusiveJavaScriptEnabled"]);

    /// <summary>
    /// Bezeichnung in den Listeneinträgen wenn man den CurrentController abfragen möchte
    /// </summary>
    public const string ControllerString = "controller";

    /// <summary>
    /// Bezeichnung in den Listeneinträgen wenn man die action abrufen möchte
    /// </summary>
    public const string ActionString = "action";

    /// <summary>
    /// Bezeichnung in den URL Parametern, wird unter Adminstration für die Kategorien benötigt.
    /// </summary>
    public const string CategoryString = "category";

    /// <summary>
    /// Bezeichnung der Id in der URL wenn man diese aus den Listeneinträgen abrufen möchte.
    /// </summary>
    public const string IdString = "id";

    /// <summary>
    /// Beim erstellen von URL kann angegeben werden für welchen Typ von URL dieser sein soll z.B. http oder https
    /// </summary>
    public const string ProtocollType = "http";

    /// <summary>
    /// Datumsformat für die Eingabe in Inputfeldern
    /// </summary>
    public const string InputDateTimeFormat = "dd.MM.yyyy";

    /// <summary>
    /// Name der Css Klasse auf die der Datepicker von jquery gebunden wird
    /// </summary>
    public const string DatePickerCssClass = "customDatepicker";

    /// <summary>
    /// Wenn diese Css Klasse bei einer Tabelle gesetzt ist, gibt es ein Eingabefeld welches nach allen Rows filtert in der passenden Tabelle
    /// Wenn tbody und thead definiert sind in der Tabelle
    /// </summary>
    public const string FilterTableRowsCssClass = "filterTable";

    /// <summary>
    /// Das Datumsformat wie es im Datepicker angezeigt werden soll. ("dd.mm.yy" == z.B.: "15.03.2002")
    /// Es kann hier nicht das gleiche Format verwendet werden wie beim .NET Datetimeformat
    /// </summary>
    public const string DatePickerDateFormat = "dd.mm.yy";

    /// <summary>
    /// Datums und Zeitformat für die Ausgabe im CsvFormat.
    /// </summary>
    public const string CsvDateTimeFormat = "dd.MM.yyyy HH:mm";

    /// <summary>
    /// Zeitformatstring
    /// </summary>
    public const string TimeFormat = "HH:mm";

    /// <summary>
    /// Datumsformat mit dem Namen des Tags davor.
    /// </summary>
    public const string TableDateTimeFormatWithDay = "ddd dd.MM.yyyy";

    /// <summary>
    /// String für einen regulären Ausdruck der eine eMail repräsentiert, hier muss aufgepasst, werden das es sich bei dem Regulären Ausdruck auch um eine Variante
    /// handelt die von Javascript interpretiert werden kann, sonst geht das RegularExpression Attribut nicht und zerschießt auch den Rest der Attribute für das jeweilige Property
    /// </summary>
    public const string EmailRegularExpString = @"^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[a-zA-Z0-9]{1})|[a-zA-Z])\.)+[a-zA-Z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$";

    /// <summary>
    /// Regular Expression String für ein Datum
    /// http://www.regular-expressions.info/dates.html
    /// TODO die Regular Expression prüfen, denn hier klappt das mit dem Deutschen Datum irgendwie nicht kann auch an dem jquery DatePicker liegen
    /// </summary>
    //public const string DateRegularExpString = @"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$";
    //public const string DateRegularExpString = @"/^\d\d[\/-.]\d\d[\/-.]\d\d\d\d$/";
    public const string DateRegularExpString = "";

    /// <summary>
    /// Name der beim Erstellen der ListEntries als ID mit hinterlegt wird, damit diese dann später ausgewertet werden können beim Postback
    /// </summary>
    public const string ListEntryName = "ListEntryName";

    /// <summary>
    /// SortId die beim Erstellen der Einträge mit angegeben werden kann.
    /// </summary>
    public const string ListEntrySortId = "ListEntrySortId";
}
